package lg.minecraft.plugin.pokemonmenu.util;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * LRU缓存实现（非线程安全）
 *
 * @param <K> 键类型
 * @param <V> 值类型
 */
public class LRUCacheMap<K, V> extends LinkedHashMap<K, V> {

    private final int maxSize;

    public LRUCacheMap(int maxSize) {
        // 初始容量16，负载因子0.75f，按访问顺序排序
        super(16, 0.75f, true);
        this.maxSize = maxSize;
    }

    /**
     * 当缓存超过最大容量时移除最久未使用的条目
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > maxSize;
    }

}
